package sel.me.spring.boot159.web.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.concurrent.TimeUnit;

/**
 * @author shenenlu 2021年06月01日 下午18:03:44
 */
@Slf4j
@Service
public class RedisService {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;


    /**
     * 借助DataSourceTransactionManager实现redis事务
     * 结果: 完全不对,一个是jdbc事务,一个是使用org.springframework.data.redis.core.RedisConnectionUtils
     *    来实现事务,牛头不对马嘴。不能实现事务
     * 结论: 尽量不使用redis事务
     * @return
     */
    @Transactional
    public String putTx() {
        int i = (int)(Math.random() * 100);
        stringRedisTemplate.opsForValue().set("key"+i, "value"+i, 300, TimeUnit.SECONDS);
        if( i >= 0 ){
            throw new RuntimeException();
        }
        return "success "+"key"+i;
    }

}
